home *** CD-ROM | disk | FTP | other *** search
- /*
- * String abstract class
- *
- * Copyright © John Wainwright 1988
- *
- * Superclasses:
- *
- * Purpose:
- *
- * methods:
- */
-
- #include "oic.h"
- #include "generics.h"
-
- class String;
-
- struct string_i
- {
- char *s_string;
- };
- typedef struct string_i string_i;
-
- /* ------------------------- Instance methods ---------------------------- */
-
- static string
- _new(self, string, val)
- object self;
- string_i *string;
- char **val;
- {
- char *strcpy();
-
- string->s_string = strcpy(salloc(strlen(*val) + 1), *val);
- return self;
- }
-
- static char *
- _stringOf(self, string)
- object self;
- string_i *string;
- {
- return string->s_string;
- }
-
- static object
- _repList(self)
- object self;
- {
- return copy(self);
- }
-
- static object
- _copy(self, string)
- object self;
- register string_i *string;
- {
- return New(String, string->s_string);
- }
-
- static
- _print(self, string)
- object self;
- string_i *string;
- {
- printf("%s\n", string->s_string);
- }
-
- static
- _draw(self, string)
- object self;
- string_i *string;
- {
- DrawString(CtoPstr(string->s_string));
- }
-
- static
- _dispose(self, string)
- object self;
- string_i *string;
- {
- free(string->s_string);
- free(self);
- }
-
- /* ------------------- Init the String class ------------------------------- */
-
- _InitString()
- {
- String = NewClass(sizeof(string_i), 0, "String", END);
- AddMethods(String,
- newGeneric, _new,
- stringOfGeneric, _stringOf,
- repListGeneric, _repList,
- printGeneric, _print,
- copyGeneric, _copy,
- deepCopyGeneric, _copy,
- disposeGeneric, _dispose,
- deepDisposeGeneric, _dispose,
- END);
- }
-
-